#pragma once
#include "Warrant.h"

#include <fstream>
#include <string>
#include <vector>

class StockCallPutCombinations
{
public:
    StockCallPutCombinations( const std::string& separator, const std::string& stockId );

    void AddWarrant( const Warrant& warrant );
    void PrintCombinations( std::ofstream& outputFile );

    static void PrintFirstRow( const std::string& separator, std::ofstream& outputFile );

private:
    void printRowToFile(
        std::ofstream&  outputFile,
        std::string     stockId,
        std::string     callId,
        std::string     putId,
        double          cost,
        double          rangeStart,
        double          rangeEnd,
        double          rangeDiff
        );

private:
    const std::string           m_separator;
    std::vector<Warrant>        m_calls;
    std::vector<Warrant>        m_puts;
    std::string                 m_stockId;
};
